// Copyright (c) 2016, SolidCP
// SolidCP is distributed under the Creative Commons Share-alike license
// 
// SolidCP is a fork of WebsitePanel:
// Copyright (c) 2015, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must  retain  the  above copyright notice, this
//   list of conditions and the following disclaimer.
//
// - Redistributions in binary form  must  reproduce the  above  copyright  notice,
//   this list of conditions  and  the  following  disclaimer in  the documentation
//   and/or other materials provided with the distribution.
//
// - Neither  the  name  of  the  Outercurve Foundation  nor   the   names  of  its
//   contributors may be used to endorse or  promote  products  derived  from  this
//   software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,  BUT  NOT  LIMITED TO, THE IMPLIED
// WARRANTIES  OF  MERCHANTABILITY   AND  FITNESS  FOR  A  PARTICULAR  PURPOSE  ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL,  SPECIAL,  EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO,  PROCUREMENT  OF  SUBSTITUTE  GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)  HOWEVER  CAUSED AND ON
// ANY  THEORY  OF  LIABILITY,  WHETHER  IN  CONTRACT,  STRICT  LIABILITY,  OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE)  ARISING  IN  ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:2.0.50727.6400
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

// 
// This source code was auto-generated by wsdl, Version=2.0.50727.3038.
// 
namespace SolidCP.EnterpriseServer {
    using System.Xml.Serialization;
    using System.Web.Services;
    using System.ComponentModel;
    using System.Web.Services.Protocols;
    using System;
    using System.Diagnostics;

    using SolidCP.Providers.Common;
    using SolidCP.Providers.HostedSolution;
    using SolidCP.Providers.ResultObjects;

    
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Web.Services.WebServiceBindingAttribute(Name="esLyncSoap", Namespace="http://tempuri.org/")]
    public partial class esLync : Microsoft.Web.Services3.WebServicesClientProtocol {
        
        private System.Threading.SendOrPostCallback CreateLyncUserOperationCompleted;
        
        private System.Threading.SendOrPostCallback DeleteLyncUserOperationCompleted;
        
        private System.Threading.SendOrPostCallback GetLyncUsersPagedOperationCompleted;
        
        private System.Threading.SendOrPostCallback GetLyncUsersByPlanIdOperationCompleted;
        
        private System.Threading.SendOrPostCallback GetLyncUserCountOperationCompleted;
        
        private System.Threading.SendOrPostCallback GetLyncUserPlansOperationCompleted;
        
        private System.Threading.SendOrPostCallback GetLyncUserPlanOperationCompleted;
        
        private System.Threading.SendOrPostCallback AddLyncUserPlanOperationCompleted;
        
        private System.Threading.SendOrPostCallback UpdateLyncUserPlanOperationCompleted;
        
        private System.Threading.SendOrPostCallback DeleteLyncUserPlanOperationCompleted;
        
        private System.Threading.SendOrPostCallback SetOrganizationDefaultLyncUserPlanOperationCompleted;
        
        private System.Threading.SendOrPostCallback GetLyncUserGeneralSettingsOperationCompleted;
        
        private System.Threading.SendOrPostCallback SetLyncUserGeneralSettingsOperationCompleted;
        
        private System.Threading.SendOrPostCallback SetUserLyncPlanOperationCompleted;
        
        private System.Threading.SendOrPostCallback GetFederationDomainsOperationCompleted;
        
        private System.Threading.SendOrPostCallback AddFederationDomainOperationCompleted;
        
        private System.Threading.SendOrPostCallback RemoveFederationDomainOperationCompleted;
        
        /// <remarks/>
        public esLync() {
            this.Url = "http://127.0.0.1:9002/esLync.asmx";
        }
        
        /// <remarks/>
        public event CreateLyncUserCompletedEventHandler CreateLyncUserCompleted;
        
        /// <remarks/>
        public event DeleteLyncUserCompletedEventHandler DeleteLyncUserCompleted;
        
        /// <remarks/>
        public event GetLyncUsersPagedCompletedEventHandler GetLyncUsersPagedCompleted;
        
        /// <remarks/>
        public event GetLyncUsersByPlanIdCompletedEventHandler GetLyncUsersByPlanIdCompleted;
        
        /// <remarks/>
        public event GetLyncUserCountCompletedEventHandler GetLyncUserCountCompleted;
        
        /// <remarks/>
        public event GetLyncUserPlansCompletedEventHandler GetLyncUserPlansCompleted;
        
        /// <remarks/>
        public event GetLyncUserPlanCompletedEventHandler GetLyncUserPlanCompleted;
        
        /// <remarks/>
        public event AddLyncUserPlanCompletedEventHandler AddLyncUserPlanCompleted;
        
        /// <remarks/>
        public event UpdateLyncUserPlanCompletedEventHandler UpdateLyncUserPlanCompleted;
        
        /// <remarks/>
        public event DeleteLyncUserPlanCompletedEventHandler DeleteLyncUserPlanCompleted;
        
        /// <remarks/>
        public event SetOrganizationDefaultLyncUserPlanCompletedEventHandler SetOrganizationDefaultLyncUserPlanCompleted;
        
        /// <remarks/>
        public event GetLyncUserGeneralSettingsCompletedEventHandler GetLyncUserGeneralSettingsCompleted;
        
        /// <remarks/>
        public event SetLyncUserGeneralSettingsCompletedEventHandler SetLyncUserGeneralSettingsCompleted;
        
        /// <remarks/>
        public event SetUserLyncPlanCompletedEventHandler SetUserLyncPlanCompleted;
        
        /// <remarks/>
        public event GetFederationDomainsCompletedEventHandler GetFederationDomainsCompleted;
        
        /// <remarks/>
        public event AddFederationDomainCompletedEventHandler AddFederationDomainCompleted;
        
        /// <remarks/>
        public event RemoveFederationDomainCompletedEventHandler RemoveFederationDomainCompleted;
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CreateLyncUser", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public LyncUserResult CreateLyncUser(int itemId, int accountId, int lyncUserPlanId) {
            object[] results = this.Invoke("CreateLyncUser", new object[] {
                        itemId,
                        accountId,
                        lyncUserPlanId});
            return ((LyncUserResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginCreateLyncUser(int itemId, int accountId, int lyncUserPlanId, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("CreateLyncUser", new object[] {
                        itemId,
                        accountId,
                        lyncUserPlanId}, callback, asyncState);
        }
        
        /// <remarks/>
        public LyncUserResult EndCreateLyncUser(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((LyncUserResult)(results[0]));
        }
        
        /// <remarks/>
        public void CreateLyncUserAsync(int itemId, int accountId, int lyncUserPlanId) {
            this.CreateLyncUserAsync(itemId, accountId, lyncUserPlanId, null);
        }
        
        /// <remarks/>
        public void CreateLyncUserAsync(int itemId, int accountId, int lyncUserPlanId, object userState) {
            if ((this.CreateLyncUserOperationCompleted == null)) {
                this.CreateLyncUserOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateLyncUserOperationCompleted);
            }
            this.InvokeAsync("CreateLyncUser", new object[] {
                        itemId,
                        accountId,
                        lyncUserPlanId}, this.CreateLyncUserOperationCompleted, userState);
        }
        
        private void OnCreateLyncUserOperationCompleted(object arg) {
            if ((this.CreateLyncUserCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.CreateLyncUserCompleted(this, new CreateLyncUserCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/DeleteLyncUser", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public ResultObject DeleteLyncUser(int itemId, int accountId) {
            object[] results = this.Invoke("DeleteLyncUser", new object[] {
                        itemId,
                        accountId});
            return ((ResultObject)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginDeleteLyncUser(int itemId, int accountId, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("DeleteLyncUser", new object[] {
                        itemId,
                        accountId}, callback, asyncState);
        }
        
        /// <remarks/>
        public ResultObject EndDeleteLyncUser(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((ResultObject)(results[0]));
        }
        
        /// <remarks/>
        public void DeleteLyncUserAsync(int itemId, int accountId) {
            this.DeleteLyncUserAsync(itemId, accountId, null);
        }
        
        /// <remarks/>
        public void DeleteLyncUserAsync(int itemId, int accountId, object userState) {
            if ((this.DeleteLyncUserOperationCompleted == null)) {
                this.DeleteLyncUserOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteLyncUserOperationCompleted);
            }
            this.InvokeAsync("DeleteLyncUser", new object[] {
                        itemId,
                        accountId}, this.DeleteLyncUserOperationCompleted, userState);
        }
        
        private void OnDeleteLyncUserOperationCompleted(object arg) {
            if ((this.DeleteLyncUserCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.DeleteLyncUserCompleted(this, new DeleteLyncUserCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetLyncUsersPaged", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public LyncUsersPagedResult GetLyncUsersPaged(int itemId, string sortColumn, string sortDirection, int startRow, int maximumRows) {
            object[] results = this.Invoke("GetLyncUsersPaged", new object[] {
                        itemId,
                        sortColumn,
                        sortDirection,
                        startRow,
                        maximumRows});
            return ((LyncUsersPagedResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginGetLyncUsersPaged(int itemId, string sortColumn, string sortDirection, int startRow, int maximumRows, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("GetLyncUsersPaged", new object[] {
                        itemId,
                        sortColumn,
                        sortDirection,
                        startRow,
                        maximumRows}, callback, asyncState);
        }
        
        /// <remarks/>
        public LyncUsersPagedResult EndGetLyncUsersPaged(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((LyncUsersPagedResult)(results[0]));
        }
        
        /// <remarks/>
        public void GetLyncUsersPagedAsync(int itemId, string sortColumn, string sortDirection, int startRow, int maximumRows) {
            this.GetLyncUsersPagedAsync(itemId, sortColumn, sortDirection, startRow, maximumRows, null);
        }
        
        /// <remarks/>
        public void GetLyncUsersPagedAsync(int itemId, string sortColumn, string sortDirection, int startRow, int maximumRows, object userState) {
            if ((this.GetLyncUsersPagedOperationCompleted == null)) {
                this.GetLyncUsersPagedOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetLyncUsersPagedOperationCompleted);
            }
            this.InvokeAsync("GetLyncUsersPaged", new object[] {
                        itemId,
                        sortColumn,
                        sortDirection,
                        startRow,
                        maximumRows}, this.GetLyncUsersPagedOperationCompleted, userState);
        }
        
        private void OnGetLyncUsersPagedOperationCompleted(object arg) {
            if ((this.GetLyncUsersPagedCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.GetLyncUsersPagedCompleted(this, new GetLyncUsersPagedCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetLyncUsersByPlanId", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public LyncUser[] GetLyncUsersByPlanId(int itemId, int planId) {
            object[] results = this.Invoke("GetLyncUsersByPlanId", new object[] {
                        itemId,
                        planId});
            return ((LyncUser[])(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginGetLyncUsersByPlanId(int itemId, int planId, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("GetLyncUsersByPlanId", new object[] {
                        itemId,
                        planId}, callback, asyncState);
        }
        
        /// <remarks/>
        public LyncUser[] EndGetLyncUsersByPlanId(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((LyncUser[])(results[0]));
        }
        
        /// <remarks/>
        public void GetLyncUsersByPlanIdAsync(int itemId, int planId) {
            this.GetLyncUsersByPlanIdAsync(itemId, planId, null);
        }
        
        /// <remarks/>
        public void GetLyncUsersByPlanIdAsync(int itemId, int planId, object userState) {
            if ((this.GetLyncUsersByPlanIdOperationCompleted == null)) {
                this.GetLyncUsersByPlanIdOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetLyncUsersByPlanIdOperationCompleted);
            }
            this.InvokeAsync("GetLyncUsersByPlanId", new object[] {
                        itemId,
                        planId}, this.GetLyncUsersByPlanIdOperationCompleted, userState);
        }
        
        private void OnGetLyncUsersByPlanIdOperationCompleted(object arg) {
            if ((this.GetLyncUsersByPlanIdCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.GetLyncUsersByPlanIdCompleted(this, new GetLyncUsersByPlanIdCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetLyncUserCount", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public IntResult GetLyncUserCount(int itemId) {
            object[] results = this.Invoke("GetLyncUserCount", new object[] {
                        itemId});
            return ((IntResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginGetLyncUserCount(int itemId, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("GetLyncUserCount", new object[] {
                        itemId}, callback, asyncState);
        }
        
        /// <remarks/>
        public IntResult EndGetLyncUserCount(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((IntResult)(results[0]));
        }
        
        /// <remarks/>
        public void GetLyncUserCountAsync(int itemId) {
            this.GetLyncUserCountAsync(itemId, null);
        }
        
        /// <remarks/>
        public void GetLyncUserCountAsync(int itemId, object userState) {
            if ((this.GetLyncUserCountOperationCompleted == null)) {
                this.GetLyncUserCountOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetLyncUserCountOperationCompleted);
            }
            this.InvokeAsync("GetLyncUserCount", new object[] {
                        itemId}, this.GetLyncUserCountOperationCompleted, userState);
        }
        
        private void OnGetLyncUserCountOperationCompleted(object arg) {
            if ((this.GetLyncUserCountCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.GetLyncUserCountCompleted(this, new GetLyncUserCountCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetLyncUserPlans", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public LyncUserPlan[] GetLyncUserPlans(int itemId) {
            object[] results = this.Invoke("GetLyncUserPlans", new object[] {
                        itemId});
            return ((LyncUserPlan[])(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginGetLyncUserPlans(int itemId, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("GetLyncUserPlans", new object[] {
                        itemId}, callback, asyncState);
        }
        
        /// <remarks/>
        public LyncUserPlan[] EndGetLyncUserPlans(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((LyncUserPlan[])(results[0]));
        }
        
        /// <remarks/>
        public void GetLyncUserPlansAsync(int itemId) {
            this.GetLyncUserPlansAsync(itemId, null);
        }
        
        /// <remarks/>
        public void GetLyncUserPlansAsync(int itemId, object userState) {
            if ((this.GetLyncUserPlansOperationCompleted == null)) {
                this.GetLyncUserPlansOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetLyncUserPlansOperationCompleted);
            }
            this.InvokeAsync("GetLyncUserPlans", new object[] {
                        itemId}, this.GetLyncUserPlansOperationCompleted, userState);
        }
        
        private void OnGetLyncUserPlansOperationCompleted(object arg) {
            if ((this.GetLyncUserPlansCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.GetLyncUserPlansCompleted(this, new GetLyncUserPlansCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetLyncUserPlan", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public LyncUserPlan GetLyncUserPlan(int itemId, int lyncUserPlanId) {
            object[] results = this.Invoke("GetLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlanId});
            return ((LyncUserPlan)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginGetLyncUserPlan(int itemId, int lyncUserPlanId, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("GetLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlanId}, callback, asyncState);
        }
        
        /// <remarks/>
        public LyncUserPlan EndGetLyncUserPlan(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((LyncUserPlan)(results[0]));
        }
        
        /// <remarks/>
        public void GetLyncUserPlanAsync(int itemId, int lyncUserPlanId) {
            this.GetLyncUserPlanAsync(itemId, lyncUserPlanId, null);
        }
        
        /// <remarks/>
        public void GetLyncUserPlanAsync(int itemId, int lyncUserPlanId, object userState) {
            if ((this.GetLyncUserPlanOperationCompleted == null)) {
                this.GetLyncUserPlanOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetLyncUserPlanOperationCompleted);
            }
            this.InvokeAsync("GetLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlanId}, this.GetLyncUserPlanOperationCompleted, userState);
        }
        
        private void OnGetLyncUserPlanOperationCompleted(object arg) {
            if ((this.GetLyncUserPlanCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.GetLyncUserPlanCompleted(this, new GetLyncUserPlanCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/AddLyncUserPlan", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public int AddLyncUserPlan(int itemId, LyncUserPlan lyncUserPlan) {
            object[] results = this.Invoke("AddLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlan});
            return ((int)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginAddLyncUserPlan(int itemId, LyncUserPlan lyncUserPlan, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("AddLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlan}, callback, asyncState);
        }
        
        /// <remarks/>
        public int EndAddLyncUserPlan(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((int)(results[0]));
        }
        
        /// <remarks/>
        public void AddLyncUserPlanAsync(int itemId, LyncUserPlan lyncUserPlan) {
            this.AddLyncUserPlanAsync(itemId, lyncUserPlan, null);
        }
        
        /// <remarks/>
        public void AddLyncUserPlanAsync(int itemId, LyncUserPlan lyncUserPlan, object userState) {
            if ((this.AddLyncUserPlanOperationCompleted == null)) {
                this.AddLyncUserPlanOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddLyncUserPlanOperationCompleted);
            }
            this.InvokeAsync("AddLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlan}, this.AddLyncUserPlanOperationCompleted, userState);
        }
        
        private void OnAddLyncUserPlanOperationCompleted(object arg) {
            if ((this.AddLyncUserPlanCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.AddLyncUserPlanCompleted(this, new AddLyncUserPlanCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/UpdateLyncUserPlan", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public int UpdateLyncUserPlan(int itemId, LyncUserPlan lyncUserPlan) {
            object[] results = this.Invoke("UpdateLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlan});
            return ((int)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginUpdateLyncUserPlan(int itemId, LyncUserPlan lyncUserPlan, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("UpdateLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlan}, callback, asyncState);
        }
        
        /// <remarks/>
        public int EndUpdateLyncUserPlan(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((int)(results[0]));
        }
        
        /// <remarks/>
        public void UpdateLyncUserPlanAsync(int itemId, LyncUserPlan lyncUserPlan) {
            this.UpdateLyncUserPlanAsync(itemId, lyncUserPlan, null);
        }
        
        /// <remarks/>
        public void UpdateLyncUserPlanAsync(int itemId, LyncUserPlan lyncUserPlan, object userState) {
            if ((this.UpdateLyncUserPlanOperationCompleted == null)) {
                this.UpdateLyncUserPlanOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateLyncUserPlanOperationCompleted);
            }
            this.InvokeAsync("UpdateLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlan}, this.UpdateLyncUserPlanOperationCompleted, userState);
        }
        
        private void OnUpdateLyncUserPlanOperationCompleted(object arg) {
            if ((this.UpdateLyncUserPlanCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.UpdateLyncUserPlanCompleted(this, new UpdateLyncUserPlanCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/DeleteLyncUserPlan", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public int DeleteLyncUserPlan(int itemId, int lyncUserPlanId) {
            object[] results = this.Invoke("DeleteLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlanId});
            return ((int)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginDeleteLyncUserPlan(int itemId, int lyncUserPlanId, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("DeleteLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlanId}, callback, asyncState);
        }
        
        /// <remarks/>
        public int EndDeleteLyncUserPlan(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((int)(results[0]));
        }
        
        /// <remarks/>
        public void DeleteLyncUserPlanAsync(int itemId, int lyncUserPlanId) {
            this.DeleteLyncUserPlanAsync(itemId, lyncUserPlanId, null);
        }
        
        /// <remarks/>
        public void DeleteLyncUserPlanAsync(int itemId, int lyncUserPlanId, object userState) {
            if ((this.DeleteLyncUserPlanOperationCompleted == null)) {
                this.DeleteLyncUserPlanOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteLyncUserPlanOperationCompleted);
            }
            this.InvokeAsync("DeleteLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlanId}, this.DeleteLyncUserPlanOperationCompleted, userState);
        }
        
        private void OnDeleteLyncUserPlanOperationCompleted(object arg) {
            if ((this.DeleteLyncUserPlanCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.DeleteLyncUserPlanCompleted(this, new DeleteLyncUserPlanCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetOrganizationDefaultLyncUserPlan", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public int SetOrganizationDefaultLyncUserPlan(int itemId, int lyncUserPlanId) {
            object[] results = this.Invoke("SetOrganizationDefaultLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlanId});
            return ((int)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginSetOrganizationDefaultLyncUserPlan(int itemId, int lyncUserPlanId, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("SetOrganizationDefaultLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlanId}, callback, asyncState);
        }
        
        /// <remarks/>
        public int EndSetOrganizationDefaultLyncUserPlan(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((int)(results[0]));
        }
        
        /// <remarks/>
        public void SetOrganizationDefaultLyncUserPlanAsync(int itemId, int lyncUserPlanId) {
            this.SetOrganizationDefaultLyncUserPlanAsync(itemId, lyncUserPlanId, null);
        }
        
        /// <remarks/>
        public void SetOrganizationDefaultLyncUserPlanAsync(int itemId, int lyncUserPlanId, object userState) {
            if ((this.SetOrganizationDefaultLyncUserPlanOperationCompleted == null)) {
                this.SetOrganizationDefaultLyncUserPlanOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetOrganizationDefaultLyncUserPlanOperationCompleted);
            }
            this.InvokeAsync("SetOrganizationDefaultLyncUserPlan", new object[] {
                        itemId,
                        lyncUserPlanId}, this.SetOrganizationDefaultLyncUserPlanOperationCompleted, userState);
        }
        
        private void OnSetOrganizationDefaultLyncUserPlanOperationCompleted(object arg) {
            if ((this.SetOrganizationDefaultLyncUserPlanCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.SetOrganizationDefaultLyncUserPlanCompleted(this, new SetOrganizationDefaultLyncUserPlanCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetLyncUserGeneralSettings", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public LyncUser GetLyncUserGeneralSettings(int itemId, int accountId) {
            object[] results = this.Invoke("GetLyncUserGeneralSettings", new object[] {
                        itemId,
                        accountId});
            return ((LyncUser)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginGetLyncUserGeneralSettings(int itemId, int accountId, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("GetLyncUserGeneralSettings", new object[] {
                        itemId,
                        accountId}, callback, asyncState);
        }
        
        /// <remarks/>
        public LyncUser EndGetLyncUserGeneralSettings(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((LyncUser)(results[0]));
        }
        
        /// <remarks/>
        public void GetLyncUserGeneralSettingsAsync(int itemId, int accountId) {
            this.GetLyncUserGeneralSettingsAsync(itemId, accountId, null);
        }
        
        /// <remarks/>
        public void GetLyncUserGeneralSettingsAsync(int itemId, int accountId, object userState) {
            if ((this.GetLyncUserGeneralSettingsOperationCompleted == null)) {
                this.GetLyncUserGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetLyncUserGeneralSettingsOperationCompleted);
            }
            this.InvokeAsync("GetLyncUserGeneralSettings", new object[] {
                        itemId,
                        accountId}, this.GetLyncUserGeneralSettingsOperationCompleted, userState);
        }
        
        private void OnGetLyncUserGeneralSettingsOperationCompleted(object arg) {
            if ((this.GetLyncUserGeneralSettingsCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.GetLyncUserGeneralSettingsCompleted(this, new GetLyncUserGeneralSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetLyncUserGeneralSettings", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public LyncUserResult SetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri) {
            object[] results = this.Invoke("SetLyncUserGeneralSettings", new object[] {
                        itemId,
                        accountId,
                        sipAddress,
                        lineUri});
            return ((LyncUserResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginSetLyncUserGeneralSettings(int itemId, int accountId, string sipAddress, string lineUri, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("SetLyncUserGeneralSettings", new object[] {
                        itemId,
                        accountId,
                        sipAddress,
                        lineUri}, callback, asyncState);
        }
        
        /// <remarks/>
        public LyncUserResult EndSetLyncUserGeneralSettings(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((LyncUserResult)(results[0]));
        }
        
        /// <remarks/>
        public void SetLyncUserGeneralSettingsAsync(int itemId, int accountId, string sipAddress, string lineUri) {
            this.SetLyncUserGeneralSettingsAsync(itemId, accountId, sipAddress, lineUri, null);
        }
        
        /// <remarks/>
        public void SetLyncUserGeneralSettingsAsync(int itemId, int accountId, string sipAddress, string lineUri, object userState) {
            if ((this.SetLyncUserGeneralSettingsOperationCompleted == null)) {
                this.SetLyncUserGeneralSettingsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetLyncUserGeneralSettingsOperationCompleted);
            }
            this.InvokeAsync("SetLyncUserGeneralSettings", new object[] {
                        itemId,
                        accountId,
                        sipAddress,
                        lineUri}, this.SetLyncUserGeneralSettingsOperationCompleted, userState);
        }
        
        private void OnSetLyncUserGeneralSettingsOperationCompleted(object arg) {
            if ((this.SetLyncUserGeneralSettingsCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.SetLyncUserGeneralSettingsCompleted(this, new SetLyncUserGeneralSettingsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SetUserLyncPlan", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public LyncUserResult SetUserLyncPlan(int itemId, int accountId, int lyncUserPlanId) {
            object[] results = this.Invoke("SetUserLyncPlan", new object[] {
                        itemId,
                        accountId,
                        lyncUserPlanId});
            return ((LyncUserResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginSetUserLyncPlan(int itemId, int accountId, int lyncUserPlanId, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("SetUserLyncPlan", new object[] {
                        itemId,
                        accountId,
                        lyncUserPlanId}, callback, asyncState);
        }
        
        /// <remarks/>
        public LyncUserResult EndSetUserLyncPlan(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((LyncUserResult)(results[0]));
        }
        
        /// <remarks/>
        public void SetUserLyncPlanAsync(int itemId, int accountId, int lyncUserPlanId) {
            this.SetUserLyncPlanAsync(itemId, accountId, lyncUserPlanId, null);
        }
        
        /// <remarks/>
        public void SetUserLyncPlanAsync(int itemId, int accountId, int lyncUserPlanId, object userState) {
            if ((this.SetUserLyncPlanOperationCompleted == null)) {
                this.SetUserLyncPlanOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetUserLyncPlanOperationCompleted);
            }
            this.InvokeAsync("SetUserLyncPlan", new object[] {
                        itemId,
                        accountId,
                        lyncUserPlanId}, this.SetUserLyncPlanOperationCompleted, userState);
        }
        
        private void OnSetUserLyncPlanOperationCompleted(object arg) {
            if ((this.SetUserLyncPlanCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.SetUserLyncPlanCompleted(this, new SetUserLyncPlanCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetFederationDomains", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public LyncFederationDomain[] GetFederationDomains(int itemId) {
            object[] results = this.Invoke("GetFederationDomains", new object[] {
                        itemId});
            return ((LyncFederationDomain[])(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginGetFederationDomains(int itemId, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("GetFederationDomains", new object[] {
                        itemId}, callback, asyncState);
        }
        
        /// <remarks/>
        public LyncFederationDomain[] EndGetFederationDomains(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((LyncFederationDomain[])(results[0]));
        }
        
        /// <remarks/>
        public void GetFederationDomainsAsync(int itemId) {
            this.GetFederationDomainsAsync(itemId, null);
        }
        
        /// <remarks/>
        public void GetFederationDomainsAsync(int itemId, object userState) {
            if ((this.GetFederationDomainsOperationCompleted == null)) {
                this.GetFederationDomainsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFederationDomainsOperationCompleted);
            }
            this.InvokeAsync("GetFederationDomains", new object[] {
                        itemId}, this.GetFederationDomainsOperationCompleted, userState);
        }
        
        private void OnGetFederationDomainsOperationCompleted(object arg) {
            if ((this.GetFederationDomainsCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.GetFederationDomainsCompleted(this, new GetFederationDomainsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/AddFederationDomain", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public LyncUserResult AddFederationDomain(int itemId, string domainName, string proxyFqdn) {
            object[] results = this.Invoke("AddFederationDomain", new object[] {
                        itemId,
                        domainName,
                        proxyFqdn});
            return ((LyncUserResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginAddFederationDomain(int itemId, string domainName, string proxyFqdn, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("AddFederationDomain", new object[] {
                        itemId,
                        domainName,
                        proxyFqdn}, callback, asyncState);
        }
        
        /// <remarks/>
        public LyncUserResult EndAddFederationDomain(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((LyncUserResult)(results[0]));
        }
        
        /// <remarks/>
        public void AddFederationDomainAsync(int itemId, string domainName, string proxyFqdn) {
            this.AddFederationDomainAsync(itemId, domainName, proxyFqdn, null);
        }
        
        /// <remarks/>
        public void AddFederationDomainAsync(int itemId, string domainName, string proxyFqdn, object userState) {
            if ((this.AddFederationDomainOperationCompleted == null)) {
                this.AddFederationDomainOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddFederationDomainOperationCompleted);
            }
            this.InvokeAsync("AddFederationDomain", new object[] {
                        itemId,
                        domainName,
                        proxyFqdn}, this.AddFederationDomainOperationCompleted, userState);
        }
        
        private void OnAddFederationDomainOperationCompleted(object arg) {
            if ((this.AddFederationDomainCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.AddFederationDomainCompleted(this, new AddFederationDomainCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }
        
        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/RemoveFederationDomain", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public LyncUserResult RemoveFederationDomain(int itemId, string domainName) {
            object[] results = this.Invoke("RemoveFederationDomain", new object[] {
                        itemId,
                        domainName});
            return ((LyncUserResult)(results[0]));
        }
        
        /// <remarks/>
        public System.IAsyncResult BeginRemoveFederationDomain(int itemId, string domainName, System.AsyncCallback callback, object asyncState) {
            return this.BeginInvoke("RemoveFederationDomain", new object[] {
                        itemId,
                        domainName}, callback, asyncState);
        }
        
        /// <remarks/>
        public LyncUserResult EndRemoveFederationDomain(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((LyncUserResult)(results[0]));
        }
        
        /// <remarks/>
        public void RemoveFederationDomainAsync(int itemId, string domainName) {
            this.RemoveFederationDomainAsync(itemId, domainName, null);
        }
        
        /// <remarks/>
        public void RemoveFederationDomainAsync(int itemId, string domainName, object userState) {
            if ((this.RemoveFederationDomainOperationCompleted == null)) {
                this.RemoveFederationDomainOperationCompleted = new System.Threading.SendOrPostCallback(this.OnRemoveFederationDomainOperationCompleted);
            }
            this.InvokeAsync("RemoveFederationDomain", new object[] {
                        itemId,
                        domainName}, this.RemoveFederationDomainOperationCompleted, userState);
        }
        
        private void OnRemoveFederationDomainOperationCompleted(object arg) {
            if ((this.RemoveFederationDomainCompleted != null)) {
                System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
                this.RemoveFederationDomainCompleted(this, new RemoveFederationDomainCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
            }
        }

        /// <remarks/>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetPolicyList", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public string[] GetPolicyList(int itemId, LyncPolicyType type, string name)
        {
            object[] results = this.Invoke("GetPolicyList", new object[] {
                        itemId, type, name});
            return ((string[])(results[0]));
        }
        
        /// <remarks/>
        public new void CancelAsync(object userState) {
            base.CancelAsync(userState);
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void CreateLyncUserCompletedEventHandler(object sender, CreateLyncUserCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class CreateLyncUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal CreateLyncUserCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public LyncUserResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((LyncUserResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void DeleteLyncUserCompletedEventHandler(object sender, DeleteLyncUserCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class DeleteLyncUserCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal DeleteLyncUserCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public ResultObject Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((ResultObject)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void GetLyncUsersPagedCompletedEventHandler(object sender, GetLyncUsersPagedCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class GetLyncUsersPagedCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal GetLyncUsersPagedCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public LyncUsersPagedResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((LyncUsersPagedResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void GetLyncUsersByPlanIdCompletedEventHandler(object sender, GetLyncUsersByPlanIdCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class GetLyncUsersByPlanIdCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal GetLyncUsersByPlanIdCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public LyncUser[] Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((LyncUser[])(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void GetLyncUserCountCompletedEventHandler(object sender, GetLyncUserCountCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class GetLyncUserCountCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal GetLyncUserCountCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public IntResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((IntResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void GetLyncUserPlansCompletedEventHandler(object sender, GetLyncUserPlansCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class GetLyncUserPlansCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal GetLyncUserPlansCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public LyncUserPlan[] Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((LyncUserPlan[])(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void GetLyncUserPlanCompletedEventHandler(object sender, GetLyncUserPlanCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class GetLyncUserPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal GetLyncUserPlanCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public LyncUserPlan Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((LyncUserPlan)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void AddLyncUserPlanCompletedEventHandler(object sender, AddLyncUserPlanCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class AddLyncUserPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal AddLyncUserPlanCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public int Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((int)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void UpdateLyncUserPlanCompletedEventHandler(object sender, UpdateLyncUserPlanCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class UpdateLyncUserPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal UpdateLyncUserPlanCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public int Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((int)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void DeleteLyncUserPlanCompletedEventHandler(object sender, DeleteLyncUserPlanCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class DeleteLyncUserPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal DeleteLyncUserPlanCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public int Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((int)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void SetOrganizationDefaultLyncUserPlanCompletedEventHandler(object sender, SetOrganizationDefaultLyncUserPlanCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class SetOrganizationDefaultLyncUserPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal SetOrganizationDefaultLyncUserPlanCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public int Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((int)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void GetLyncUserGeneralSettingsCompletedEventHandler(object sender, GetLyncUserGeneralSettingsCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class GetLyncUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal GetLyncUserGeneralSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public LyncUser Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((LyncUser)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void SetLyncUserGeneralSettingsCompletedEventHandler(object sender, SetLyncUserGeneralSettingsCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class SetLyncUserGeneralSettingsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal SetLyncUserGeneralSettingsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public LyncUserResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((LyncUserResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void SetUserLyncPlanCompletedEventHandler(object sender, SetUserLyncPlanCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class SetUserLyncPlanCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal SetUserLyncPlanCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public LyncUserResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((LyncUserResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void GetFederationDomainsCompletedEventHandler(object sender, GetFederationDomainsCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class GetFederationDomainsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal GetFederationDomainsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public LyncFederationDomain[] Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((LyncFederationDomain[])(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void AddFederationDomainCompletedEventHandler(object sender, AddFederationDomainCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class AddFederationDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal AddFederationDomainCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public LyncUserResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((LyncUserResult)(this.results[0]));
            }
        }
    }
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    public delegate void RemoveFederationDomainCompletedEventHandler(object sender, RemoveFederationDomainCompletedEventArgs e);
    
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    public partial class RemoveFederationDomainCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
        
        private object[] results;
        
        internal RemoveFederationDomainCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : 
                base(exception, cancelled, userState) {
            this.results = results;
        }
        
        /// <remarks/>
        public LyncUserResult Result {
            get {
                this.RaiseExceptionIfNecessary();
                return ((LyncUserResult)(this.results[0]));
            }
        }
    }
}
